package interfaces;

public interface IAnswerManager {

	/**
	 * Mensagem enviada por um trabalhador para seu gerente, contendo o
	 * resultado de um job já calculado.
	 * 
	 * @param workerId
	 * @param jobId
	 * @param resultDescription
	 */
	void jobResult(String workerId, String jobId, byte[] resultDescription);
	
	/**
	 * Define uma Identificacao para o node
	 * @param id
	 */
	void setID(String id);

	/**
	 * Obtem a identificacao do node
	 * @return
	 */
	String getID();
	
	/**
	 * Define o pai de uma determinada tarefa
	 */
	void setParentJobList(String jobId, IJob job);
	
	/**
	 * Retorna o pai de um determinada tarefa
	 * 
	 * @param jobId
	 * @return
	 */
	IJob getParentJobList(String jobId);
	
	/**
	 * Define a tarefa enviada
	 * @param JobId
	 * @param job
	 */
	void setSendJobList(String jobId, IJob job);
	
	/**
	 * Obtem a tarefa enviada
	 * @param jobId
	 * @return
	 */
	IJob getSendJobList(String jobId);
	
	/**
	 * Define o procurador deste gerente
	 * @return
	 */
	IManagerProxy getManagerProxy();
	
	/**
	 * Retorna o procurador deste gerente
	 * @param managerProxy
	 */
	void setManagerProxy(IManagerProxy managerProxy);
	
	/**
	 * Define o gerente de tarefa
	 */
	IJobManager getJobManager();
	
	/**
	 * Retorna o gerente de tarefas
	 * @param jobManager
	 */
	void setJobManager(IJobManager jobManager);
	
	/**
	 * Retorna o gerente de estato
	 * @return
	 */
	IStatusManager getStatusManager();
	
	/**
	 * Define o gerente de estado
	 * @param statusManager
	 */
	void setStatusMManager(IStatusManager statusManager);
}